Django-তে static files হলো এমন ফাইল যা পরিবর্তিত হয় না, যেমন CSS, JavaScript, এবং ইমেজ ফাইল। এই ফাইলগুলি সাধারণত আপনার ওয়েব পেজের ডিজাইন, ফাংশনালিটি এবং কনটেন্ট প্রদর্শন করতে ব্যবহৃত হয়। Django এ static files-এর ব্যবস্থাপনা সহজ এবং আপনি Django এর বিল্ট-ইন static file handling সিস্টেম ব্যবহার করে এই ফাইলগুলিকে সঠিকভাবে কনফিগার এবং রেন্ডার করতে পারেন।
Static Files কনফিগারেশন
Django প্রকল্পে CSS, JavaScript এবং ইমেজ ফাইলগুলির ব্যবস্থাপনা করতে কয়েকটি ধাপ অনুসরণ করতে হয়।
১. STATICFILES_DIRS এবং STATIC_ROOT কনফিগারেশন
Django সেটিংস ফাইলে static files-এর লোকেশন এবং তাদের ব্যবস্থাপনা কনফিগার করার জন্য কিছু গুরুত্বপূর্ণ কনফিগারেশন করতে হয়।
settings.py ফাইলে কনফিগারেশন
# settings.py
import os
# Static files (CSS, JavaScript, Images)
STATIC_URL = '/static/'
# Static file directories to search for files
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'), # Project-level static directory
]
# Directory where static files will be collected during deployment
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # For deployment (collectstatic)
এখানে:
STATIC_URL: এটি হলো static files-এর URL পাথ, যেখানে ক্লায়েন্ট ব্রাউজারে এই ফাইলগুলির অ্যাক্সেস করা হবে। সাধারণত এটি/static/থাকে।STATICFILES_DIRS: এটি হলো আপনার প্রজেক্টের মধ্যে যেখানে static ফাইলগুলি সংরক্ষিত থাকবে তার পাথ। এখানে আপনার বিভিন্ন অ্যাপ্লিকেশনের static ফোল্ডারকে অন্তর্ভুক্ত করতে পারেন।STATIC_ROOT: এটি হলো সেই ডিরেক্টরি যেখানে Djangocollectstaticকমান্ডটি চালানোর পর সকল static ফাইল একটি জায়গায় সংগ্রহ করে রাখবে। এটি সাধারণত ডেপ্লয়মেন্টের জন্য ব্যবহৃত হয়।
২. Static ফাইল তৈরি এবং ব্যবহৃত করা
এখন আপনি আপনার প্রজেক্টের static ফোল্ডারে CSS, JavaScript এবং ইমেজ ফাইল রাখতে পারবেন। উদাহরণস্বরূপ:
Directory Structure
my_project/
myapp/
static/
myapp/
css/
style.css
js/
script.js
images/
logo.png
manage.py
settings.py
এখানে, static/myapp/css/, static/myapp/js/, এবং static/myapp/images/ ফোল্ডারে static ফাইলগুলি রাখা হয়েছে।
৩. Static ফাইল টেমপ্লেটে ব্যবহার করা
Django টেমপ্লেট সিস্টেমে static ফাইল ব্যবহার করার জন্য আপনাকে static ট্যাগ ব্যবহার করতে হবে। এটি Django এর বিল্ট-ইন টেমপ্লেট ট্যাগ যা আপনাকে static ফাইলগুলির পাথ অ্যাক্সেস করতে দেয়।
উদাহরণ:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Website</title>
<!-- Linking to the CSS file -->
<link rel="stylesheet" href="{% static 'myapp/css/style.css' %}">
</head>
<body>
<h1>Welcome to My Website</h1>
<img src="{% static 'myapp/images/logo.png' %}" alt="Logo">
<script src="{% static 'myapp/js/script.js' %}"></script>
</body>
</html>
এখানে:
{% load static %}: এটি Django টেমপ্লেট সিস্টেমে static ফাইল ব্যবহারের জন্য প্রয়োজনীয় ট্যাগ লোড করে।{% static 'path_to_file' %}: এটি static ফাইলের সঠিক URL তৈরি করতে ব্যবহৃত হয়, যেখানেpath_to_fileহলো ফাইলের পথ।
৪. Static ফাইল সংগ্রহ (collectstatic)
ডেপ্লয়মেন্টের সময় Django collectstatic কমান্ড ব্যবহার করে সমস্ত static ফাইল একটি একক স্থানে সংগ্রহ করে রাখে। এটি Django এর ডিফল্ট behavior, যাতে প্রোডাকশন সার্ভারে static ফাইলগুলো সঠিকভাবে পরিবেশন করা যায়।
collectstatic কমান্ড চালানো
প্রোডাকশন পরিবেশে static ফাইলগুলো সংগ্রহ করতে নিচের কমান্ডটি ব্যবহার করুন:
python manage.py collectstatic
এটি STATIC_ROOT ডিরেক্টরির মধ্যে সব static ফাইলগুলো একত্রিত করবে।
৫. Static ফাইল সার্ভিং (Development vs Production)
- ডেভেলপমেন্ট: Django ডেভেলপমেন্ট সার্ভারে static ফাইলগুলো স্বয়ংক্রিয়ভাবে সরবরাহ করে। এজন্য আপনাকে আলাদা কোনো ওয়েব সার্ভারের প্রয়োজন হয় না। যদি
DEBUG=Trueথাকে, Django static ফাইলগুলো সরবরাহ করবে। - প্রোডাকশন: প্রোডাকশনে Django শুধুমাত্র static ফাইলগুলো
collectstaticকমান্ডের মাধ্যমে একত্রিত করার পর একটি ওয়েব সার্ভারের মাধ্যমে সরবরাহ করা হয়, যেমন Nginx বা Apache। Django নিজে static ফাইল সরবরাহ করার জন্য অপ্টিমাইজড নয়।
সারাংশ
Django তে static ফাইল ব্যবস্থাপনা খুবই সহজ। আপনি settings.py ফাইলে static files-এর পাথ কনফিগার করে, Django টেমপ্লেটে static ট্যাগ ব্যবহার করে সেগুলি অ্যাক্সেস করতে পারবেন। ডেভেলপমেন্ট পরিবেশে Django স্বয়ংক্রিয়ভাবে static ফাইল সরবরাহ করে, তবে প্রোডাকশনে collectstatic কমান্ডের মাধ্যমে একটি একক ডিরেক্টরিতে এগুলি একত্রিত করা হয়, এবং তারপর একটি ওয়েব সার্ভারের মাধ্যমে সরবরাহ করা হয়।
Read more